﻿using System;
using System.Collections.Generic;

namespace Pap.Data
{
    /// <summary>
    /// 
    /// </summary>
    public interface ILoanExecutionInstallment : IEntity
    {
        /// <summary>
        /// Gets or sets the loan execution installment ID.
        /// </summary>
        /// <value>
        /// The loan execution installment ID.
        /// </value>
        Guid LoanExecutionInstallmentID { get; set; }
        /// <summary>
        /// Gets or sets the loan execution ID.
        /// </summary>
        /// <value>
        /// The loan execution ID.
        /// </value>
        Guid LoanExecutionID { get; set; }
        /// <summary>
        /// Gets or sets the installment date.
        /// </summary>
        /// <value>
        /// The installment date.
        /// </value>
        DateTime InstallmentDate { get; set; }
        /// <summary>
        /// Gets or sets the original installment amount.
        /// </summary>
        /// <value>
        /// The original installment amount.
        /// </value>
        double OriginalInstallmentAmount { get; set; }
        /// <summary>
        /// Gets or sets the interest installment amount.
        /// </summary>
        /// <value>
        /// The interest installment amount.
        /// </value>
        double InterestInstallmentAmount { get; set; }
        /// <summary>
        /// Gets or sets the total installment amount.
        /// </summary>
        /// <value>
        /// The total installment amount.
        /// </value>
        double TotalInstallmentAmount { get; set; }
        /// <summary>
        /// Gets or sets the penalty days.
        /// </summary>
        /// <value>
        /// The penalty days.
        /// </value>
        int PenaltyDays { get; set; }
        /// <summary>
        /// Gets or sets the penalty amount.
        /// </summary>
        /// <value>
        /// The penalty amount.
        /// </value>
        double PenaltyAmount { get; set; }
        /// <summary>
        /// Gets or sets a value indicating whether this instance is paid.
        /// </summary>
        /// <value>
        ///   <c>true</c> if this instance is paid; otherwise, <c>false</c>.
        /// </value>
        bool IsPaid { get; set; }
        /// <summary>
        /// Gets the loan execution.
        /// </summary>
        ILoanExecution LoanExecution { get; }
        /// <summary>
        /// Gets the loan installment payment LST.
        /// </summary>
        IEnumerable<ILoanInstallmentPayment> LoanInstallmentPaymentLst { get; }
    }
}
